¥È¥Ã¥×¤ØÌá¤ë¥Ë¥å¡¼¥¹¥Õ¥©¡¼¥é¥àFLASH-ML ²áµî¥í¥°Bak@Fla¥À¥¦¥ó¥í¡¼¥É¤è¤¯¤¢¤ë¼ÁÌä¤ÈÅú
¥í¥°¥¤¥ó
¥æ¡¼¥¶Ì¾:

¥Ñ¥¹¥ï¡¼¥É:


¥Ñ¥¹¥ï¡¼¥Éʶ¼º

¿·µ¬ÅÐÏ¿
¥á¥¤¥ó¥á¥Ë¥å¡¼
¥á¥¤¥ó
   ActionScript 3.0 ÆÃÀß²ñµÄ¼¼
     3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï
Åê¹Æ¤¹¤ë¤Ë¤Ï¤Þ¤ºÅÐÏ¿¤ò

¥¹¥ì¥Ã¥Éɽ¼¨ | ¿·¤·¤¤¤â¤Î¤«¤é Á°¤Î¥È¥Ô¥Ã¥¯ | ¼¡¤Î¥È¥Ô¥Ã¥¯ | ²¼¤Ø
Åê¹Æ¼Ô ¥¹¥ì¥Ã¥É
SeeDa!!
Åê¹ÆNo.41288
Åê¹ÆÆü»þ: 2009-1-23 1:26
¿¦¿Í
µï½»ÃÏ: Nagoya
Åê¹Æ: 221
»ÈÍѴĶ­:
WinXP
Flash CS4
au:W33SA­¶
3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï
CS4¤ò¼ê¤ËÆþ¤ì¤ÆAS3.0¤ò¿¨¤ê»Ï¤á¤Þ¤·¤¿¡£
´Êñ¤Ê¥³¡¼¥É¤Ç²èÁü¤òŽ¤Ã¤¿Î©ÊýÂΤò3D(Æ©»ëÅê±Æ)¤Ç²óž¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Æ¶Ã¤¤¤Æ¤Þ¤¹¡ª

Àµ¤·¤¤ºîË¡¤È¤Ï¤Û¤É±ó¤¤²¼µ­¤Î¥³¡¼¥É¤ò¥Õ¥ì¡¼¥à¤Ë½ñ¤¤¤Æ²¿¤È¤«¤½¤ì¤Ã¤Ý¤¯²óž¤·¤Æ¤Þ¤¹¤¬¡¢´¶³ÐŪ¤Ë¤Á¤ç¤Ã¤ÈÊÑ¤ÊÆ°¤­¤Ç¤¹¡£
ΩÊýÂΤα¦¤Ø¥«¡¼¥½¥ë¤ò»ý¤Ã¤Æ¤¤¤¯¤È±¦¡¢²¼¤Ø»ý¤Ã¤Æ¤¤¤¯¤È²¼¡Ä¤È¤¤¤¦¤Î¤¬¾¯¤·¤º¤ì¤ë¤·¡¢¼Ð¤áÊý¸þ¤Ï¤Æ¤ó¤ÇÏäˤʤê¤Þ¤»¤ó¡£

X,Y¼´¤Î²óž¤À¤±¤Çɽ¸½¤·¤Æ¤Þ¤¹¤¬Z¼´²óž¤ò¤¦¤Þ¤¯ÍøÍѤ¹¤ì¤Ð¤è¤¤¤Î¤«¡¢¥Ù¥¯¥¿¡¼¤òÊØÍø¤Ë»È¤¨¤ë¤Î¤«¡¢Éßµï¤Î¹â¤½¤¦¤Êmatrix¤Ë¼ê¤ò½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤«¡Ä¡¢²¿¤«½õ¸À¤ò¤¤¤¿¤À¤±¤ë¤È½õ¤«¤ê¤Þ¤¹¡£

/*
 * ΩÊýÂΤò¥Þ¥¦¥¹¤ËÈ¿±þ¤µ¤»¤Æ²óž¤µ¤»¤ë¥µ¥ó¥×¥ë
 * ³ÆÌ̤δð½àÅÀ¤ÏÃæ¿´¤ËÀßÄꤷ¤Æ¥é¥¤¥Ö¥é¥ê¤ËÅÐÏ¿¤·¤Æ¤ª¤¯
 * £¶Ì̤òrect1¡Árect6¤È¤·¤Æ¤ª¤­¡¢¤½¤Î¤Þ¤Þ¥¹¥¯¥ê¥×¥ÈÍѤ˽ñ¤­½Ð¤¹
 */

// ΩÊýÂΤÎ1ÊÕ¤ÎŤµ
var nearLen:Number = 100;

// ΩÊýÂΤò²èÌ̤Υ»¥ó¥¿¡¼¤ËÇÛÃÖ
var cube:MovieClip = new MovieClip();
addChild(cube);
cube.x = stage.stageWidth/2;
cube.y = stage.stageHeight/2;

// ¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë²èÁü(MC)¤Î°ÌÃÖÀßÄê
var face1:MovieClip = new rect1();
face1.z = -nearLen/2;
var face2:MovieClip = new rect2();
face2.z = nearLen/2;
face2.rotationY = 180;
var face3:MovieClip = new rect3();
face3.x = -nearLen/2;
face3.rotationY = 90;
var face4:MovieClip = new rect4();
face4.x = nearLen/2;
face4.rotationY = 270;
var face5:MovieClip = new rect5();
face5.y = -nearLen/2;
face5.rotationX = -90;
var face6:MovieClip = new rect6();
face6.y = nearLen/2;
face6.rotationX = 90;

// ³ÆÌ̤òÇÛÎó¤Ë³ÊǼ
var faces:Array = new Array(face1, face2, face3, face4, face5, face6);

// ΩÊýÂΤò²óž
stage.addEventListener(Event.ENTER_FRAME, rotationCube);
function rotationCube(e:Event) {
	// ¥Þ¥¦¥¹°ÌÃÖ¤«¤é²óž¥¹¥Ô¡¼¥É¤ò·èÄê
	var dx:Number = stage.mouseX - cube.x;
	var dy:Number = stage.mouseY - cube.y;
	cube.rotationY -= dx / 9;
	cube.rotationX += dy / 9;
	// ͽ¤á³ÆÌ̤òŽ¤Ã¤Æ¤½¤ÎZºÂɸ¤òÆÀ¤ë
	for (var ind:uint = 0; ind < faces.length; ind++) {
		cube.addChild(faces[ind]);
	}
	// ¥°¥í¡¼¥Ð¥ë¤ÊzºÂɸ¤òÆÀ¤ë
	for (ind=0; ind < faces.length; ind++) {
		faces[ind].pz = faces[ind].transform.getRelativeMatrix3D(root).position.z;
		cube.removeChild(faces[ind]);
	}
	// zºÂɸ¤¬Î©ÊýÂΤè¤êÁ°Ì̤ˤ¢¤ëÌ̤À¤±¤òÉÁ²è
	faces.sortOn("pz", Array.NUMERIC | Array.DESCENDING);
	for (ind=0; ind < faces.length; ind++) {
		if (faces[ind].pz < cube.z) {
			cube.addChild(faces[ind]); 
		}
	}
}

²áµî¤ËAS2.0¤Ç¥´¥ê¥´¥ê½ñ¤¤¤¿¤â¤Î¤Ï»×¤¤Ä̤ê¤Ë²óž¤·¤¿¤ó¤À¤±¤É¤Ê¤¡
º£²ó¤Î¤Ïºî¤ê¤¬´Êñ¤¹¤®µÑ¤Ã¤Æ¼ê¤³¤º¤Ã¤Æ¤Þ¤¹¡£¤Ã¤Æ¤¤¤¦¤«¡¢¤­¤Ã¤È´Êñ¤ÊÊýË¡¤¬¤¢¤ë¤ó¤¸¤ã¤Ê¤¤¤«¤È
ÌîÃæÊ¸Íº
Åê¹ÆNo.41289
Åê¹ÆÆü»þ: 2009-1-23 3:11
¤Á¤ç¤ó¤Þ¤²¤é
µï½»ÃÏ: Åìµþ
Åê¹Æ: 4166
»ÈÍѴĶ­:
CS4 .4.11 Vista Home Premium (SP1)
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï
¥¤¥ó¥¹¥¿¥ó¥¹¤Î¥Ç¥Õ¥©¥ë¥È(½é´ü)¾õÂÖ¤òµ¯ÅÀ¤Ë¡¢²óž¤¬²Ã¤ï¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£

»²¹Í:¡ÖMatrix3D¥¯¥é¥¹ ¡Ý ÊÑ´¹¹ÔÎó2¡×(¤È¤¯¤Ë02¡ÖÊÑ´¹¹ÔÎó¤òŬÍѤ¹¤ë½ç½ø¡×°Ê¹ß)¡¢¡ÖÊÑ´¹¹ÔÎó¤ò¿ô³ØÅª¤Ëª¤¨¤ë¡×(¤È¤¯¤Ë3¡ÖMatrix3D¥¯¥é¥¹¤Ë¤ª¤±¤ëÊÑ´¹¹ÔÎó¤Î°·¤¤¡×)
°úÍÑ¡§
SeeDa¤µ¤ó¤Ï½ñ¤­¤Þ¤·¤¿¡§
ΩÊýÂΤα¦¤Ø¥«¡¼¥½¥ë¤ò»ý¤Ã¤Æ¤¤¤¯¤È±¦¡¢²¼¤Ø»ý¤Ã¤Æ¤¤¤¯¤È²¼¡Ä¤È¤¤¤¦¤Î¤¬¾¯¤·¤º¤ì¤ë¤·¡¢¼Ð¤áÊý¸þ¤Ï¤Æ¤ó¤ÇÏäˤʤê¤Þ¤»¤ó¡£

X,Y¼´¤Î²óž¤À¤±¤Çɽ¸½¤·¤Æ¤Þ¤¹¤¬Z¼´²óž¤ò¤¦¤Þ¤¯ÍøÍѤ¹¤ì¤Ð¤è¤¤¤Î¤«¡¢¥Ù¥¯¥¿¡¼¤òÊØÍø¤Ë»È¤¨¤ë¤Î¤«¡¢Éßµï¤Î¹â¤½¤¦¤Êmatrix¤Ë¼ê¤ò½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤«¡Ä¡¢²¿¤«½õ¸À¤ò¤¤¤¿¤À¤±¤ë¤È½õ¤«¤ê¤Þ¤¹¡£


----------------
¡¡

ÌîÃæÊ¸Íº
Åê¹ÆNo.41290
Åê¹ÆÆü»þ: 2009-1-23 4:08
¤Á¤ç¤ó¤Þ¤²¤é
µï½»ÃÏ: Åìµþ
Åê¹Æ: 4166
»ÈÍѴĶ­:
CS4 .4.11 Vista Home Premium (SP1)
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï
°Ê²¼¤Î½¤Àµ¤ò²Ã¤¨¤ë¤È¡¢¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«¡£
°úÍÑ¡§
SeeDa¤µ¤ó¤Ï½ñ¤­¤Þ¤·¤¿¡§
ΩÊýÂΤα¦¤Ø¥«¡¼¥½¥ë¤ò»ý¤Ã¤Æ¤¤¤¯¤È±¦¡¢²¼¤Ø»ý¤Ã¤Æ¤¤¤¯¤È²¼¡Ä¤È¤¤¤¦¤Î¤¬¾¯¤·¤º¤ì¤ë¤·¡¢¼Ð¤áÊý¸þ¤Ï¤Æ¤ó¤ÇÏäˤʤê¤Þ¤»¤ó¡£
...[ÃæÎ¬]...
/*
 * ΩÊýÂΤò¥Þ¥¦¥¹¤ËÈ¿±þ¤µ¤»¤Æ²óž¤µ¤»¤ë¥µ¥ó¥×¥ë
 * ³ÆÌ̤δð½àÅÀ¤ÏÃæ¿´¤ËÀßÄꤷ¤Æ¥é¥¤¥Ö¥é¥ê¤ËÅÐÏ¿¤·¤Æ¤ª¤¯
 * £¶Ì̤òrect1¡Árect6¤È¤·¤Æ¤ª¤­¡¢¤½¤Î¤Þ¤Þ¥¹¥¯¥ê¥×¥ÈÍѤ˽ñ¤­½Ð¤¹
 */

// ΩÊýÂΤÎ1ÊÕ¤ÎŤµ
var nearLen:Number = 100;

// ΩÊýÂΤò²èÌ̤Υ»¥ó¥¿¡¼¤ËÇÛÃÖ
var cube:MovieClip = new MovieClip();
addChild(cube);
cube.x = stage.stageWidth/2;
cube.y = stage.stageHeight/2;
cube.z = 0;
// ¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë²èÁü(MC)¤Î°ÌÃÖÀßÄê
var face1:MovieClip = new rect1();
face1.z = -nearLen/2;
var face2:MovieClip = new rect2();
face2.z = nearLen/2;
face2.rotationY = 180;
var face3:MovieClip = new rect3();
face3.x = -nearLen/2;
face3.rotationY = 90;
var face4:MovieClip = new rect4();
face4.x = nearLen/2;
face4.rotationY = 270;
var face5:MovieClip = new rect5();
face5.y = -nearLen/2;
face5.rotationX = -90;
var face6:MovieClip = new rect6();
face6.y = nearLen/2;
face6.rotationX = 90;

// ³ÆÌ̤òÇÛÎó¤Ë³ÊǼ
var faces:Array = new Array(face1, face2, face3, face4, face5, face6);

// ΩÊýÂΤò²óž
stage.addEventListener(Event.ENTER_FRAME, rotationCube);
function rotationCube(e:Event) {
	// ¥Þ¥¦¥¹°ÌÃÖ¤«¤é²óž¥¹¥Ô¡¼¥É¤ò·èÄê
	var dx:Number = stage.mouseX - cube.x;
	var dy:Number = stage.mouseY - cube.y;
	// cube.rotationY -= dx / 9;
	// cube.rotationX += dy / 9;
	var nX:Number = cube.x;
	var nY:Number = cube.y;
	cube.transform.matrix3D.appendTranslation(-nX, -nY, 0);
	cube.transform.matrix3D.appendRotation(-dx/9, Vector3D.Y_AXIS);
	cube.transform.matrix3D.appendRotation(dy/9, Vector3D.X_AXIS);
	cube.transform.matrix3D.appendTranslation(nX, nY, 0);
	// ͽ¤á³ÆÌ̤òŽ¤Ã¤Æ¤½¤ÎZºÂɸ¤òÆÀ¤ë
	for (var ind:uint = 0; ind < faces.length; ind++) {
		cube.addChild(faces[ind]);
	}
	// ¥°¥í¡¼¥Ð¥ë¤ÊzºÂɸ¤òÆÀ¤ë
	for (ind=0; ind < faces.length; ind++) {
		faces[ind].pz = faces[ind].transform.getRelativeMatrix3D(root).position.z;
		cube.removeChild(faces[ind]);
	}
	// zºÂɸ¤¬Î©ÊýÂΤè¤êÁ°Ì̤ˤ¢¤ëÌ̤À¤±¤òÉÁ²è
	faces.sortOn("pz", Array.NUMERIC | Array.DESCENDING);
	for (ind=0; ind < faces.length; ind++) {
		if (faces[ind].pz < cube.z) {
			cube.addChild(faces[ind]); 
		}
	}
}


----------------
¡¡

SeeDa!!
Åê¹ÆNo.41291
Åê¹ÆÆü»þ: 2009-1-23 5:27
¿¦¿Í
µï½»ÃÏ: Nagoya
Åê¹Æ: 221
»ÈÍѴĶ­:
WinXP
Flash CS4
au:W33SA­¶
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï
¤Þ¤µ¤Ëõ¤·¤Æ¤¤¤¿²óÅú¤ò¤¤¤¿¤À¤­¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£
¤ª±¢¤Ç¤È¤Æ¤âµ¤»ý¤Á¤è¤¤Æ°¤­¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¤³¤ì¤ò¸µ¤Ë¿§¡¹¤ÈȯŸ¤Ç¤­¤½¤¦¤Ç¤¹¡£

źºï¤·¤Æ¤¤¤¿¤À¤¤¤¿¥¹¥¯¥ê¥×¥È¤È¡¢¤´Ä󼨤¤¤¿¤À¤¤¤¿Matrix3D¥¯¥é¥¹¤Îµ­»ö¤ò»²¹Í¤Ë¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤È¤³¤í¡¢cube.z = 0;¤òÈ´¤«¤·¤¿¤¿¤á¤Ë¥¨¥é¡¼¤Ë¤Ê¤Ã¤¿¤Î¤È¡¢Y¼´²óž¤¬¥«¡¼¥½¥ë¤Î¸þ¤­¤ÈµÕ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤ÇÀÖ»úÉôʬ¤ò½¤Àµ¤·¤Þ¤·¤¿¡£Ì̤ÎÇÛÃÖÊýË¡¤ËÌäÂ꤬¤¢¤Ã¤¿¤Î¤«¤Ê¡©

Matrix3D¥¯¥é¥¹¤ÏActionScript3.0 ¥×¥í¥Õ¥§¥Ã¥·¥ç¥Ê¥ë¥¬¥¤¥É¤ËºÜ¤Ã¤Æ¤Þ¤»¤ó¤è¤Í¡©
¤â¤Ã¤È¤â61/640p¤Þ¤Ç¤·¤«ÆÉ¤ß¿Ê¤ó¤Ç¤¤¤Þ¤»¤ó¤¬
CS4¤Ç¤Î3D¥¹¥´¥¤¤Ç¤¹¡£triangle¤ä¤évector¤ä¤é¡¢¥ª¥Á¥ª¥Á¿²¤Æ¤¤¤é¤ì¤Þ¤»¤ó¡£

/*
 * ΩÊýÂΤò¥Þ¥¦¥¹¤ËÈ¿±þ¤µ¤»¤Æ²óž¤µ¤»¤ë¥µ¥ó¥×¥ë
 * ³ÆÌ̤δð½àÅÀ¤ÏÃæ¿´¤ËÀßÄꤷ¤Æ¥é¥¤¥Ö¥é¥ê¤ËÅÐÏ¿¤·¤Æ¤ª¤¯
 * £¶Ì̤òrect1¡Árect6¤È¤·¤Æ¤ª¤­¡¢¤½¤Î¤Þ¤Þ¥¹¥¯¥ê¥×¥ÈÍѤ˽ñ¤­½Ð¤¹
 */

// ΩÊýÂΤÎ1ÊÕ¤ÎŤµ
var nearLen:Number = 100;

// ΩÊýÂΤò²èÌ̤Υ»¥ó¥¿¡¼¤ËÇÛÃÖ
var cube:MovieClip = new MovieClip();
addChild(cube);
cube.x = stage.stageWidth/2;
cube.y = stage.stageHeight/2;

// ¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë²èÁü¤Î°ÌÃÖÀßÄê
var face1:MovieClip = new rect1();
face1.z = -nearLen/2;
var face2:MovieClip = new rect2();
face2.z = nearLen/2;
face2.rotationY = 180;
var face3:MovieClip = new rect3();
face3.x = -nearLen/2;
face3.rotationY = 90;
var face4:MovieClip = new rect4();
face4.x = nearLen/2;
face4.rotationY = 270;
var face5:MovieClip = new rect5();
face5.y = -nearLen/2;
face5.rotationX = -90;
var face6:MovieClip = new rect6();
face6.y = nearLen/2;
face6.rotationX = 90;

// ³ÆÌ̤òÇÛÎó¤Ë³ÊǼ
var faces:Array = new Array(face1, face2, face3, face4, face5, face6);

// ΩÊýÂΤò¥Þ¥¦¥¹°ÌÃÖ¤ò¤â¤È¤Ë²óž
stage.addEventListener(Event.ENTER_FRAME, rotationCube);
var nX:Number = cube.x;
var nY:Number = cube.y;
var nDeceleration:Number = 0.3;
cube.z = 0;
function rotationCube(e:Event):void {
	var nRotationY:Number = (nX - mouseX) * nDeceleration;
	var nRotationX:Number = (mouseY - nY) * nDeceleration;
	cube.transform.matrix3D.appendTranslation(-nX, -nY, 0);
	cube.transform.matrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
	cube.transform.matrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
	cube.transform.matrix3D.appendTranslation(nX, nY, 0);
	// ZºÂɸ¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë³ÆÌ̤òÇÛÃÖ
	for (var ind:uint = 0; ind < faces.length; ind++) {
		cube.addChild(faces[ind]);
	}
	// ³ÆÌ̤Υ°¥í¡¼¥Ð¥ë¤ÊzºÂɸ¤ò¼èÆÀ
	for (ind=0; ind < faces.length; ind++) {
		faces[ind].pz = faces[ind].transform.getRelativeMatrix3D(root).position.z;
		cube.removeChild(faces[ind]);
	}
	// zºÂɸ¤¬Î©ÊýÂΤè¤êÁ°Ì̤ˤ¢¤ëÌ̤À¤±¤òÉÁ²è
	faces.sortOn("pz", Array.NUMERIC | Array.DESCENDING);
	for (ind=0; ind < faces.length; ind++) {
		if (faces[ind].pz < cube.z) {
			cube.addChild(faces[ind]); 
		}
	}
}
ÌîÃæÊ¸Íº
Åê¹ÆNo.41293
Åê¹ÆÆü»þ: 2009-1-23 13:46
¤Á¤ç¤ó¤Þ¤²¤é
µï½»ÃÏ: Åìµþ
Åê¹Æ: 4166
»ÈÍѴĶ­:
CS4 .4.11 Vista Home Premium (SP1)
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï
Matrix3D¥¯¥é¥¹¤Ï¡¢Flash Player 10¤Î¼ÂÁõ¤Ç¤¹¤Î¤Ç¡¢¼ýÏ¿¤Ë¤Ï´Ö¤Ë¹ç¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£¶ñÂÎŪ¤ËÆüÄø¤Ï·è¤Þ¤Ã¤Æ¤¤¤Þ¤»¤ó¤±¤É¡¢¤Ä¤®¤Ë²þÄû¤¹¤ë¤È¤­¤Ï²òÀâ¤Ë´Þ¤á¡¢¹ÔÎó¤Î¿ô³ØÅª¤ÊÀâÌÀ¤â¤«¤Ê¤êÊ䤦¤Ä¤â¤ê¤Ç¤¹¡£
°úÍÑ¡§
SeeDa¤µ¤ó¤Ï½ñ¤­¤Þ¤·¤¿¡§
Matrix3D¥¯¥é¥¹¤ÏActionScript3.0 ¥×¥í¥Õ¥§¥Ã¥·¥ç¥Ê¥ë¥¬¥¤¥É¤ËºÜ¤Ã¤Æ¤Þ¤»¤ó¤è¤Í¡©

¤½¤ì¤À¤±¤Ç¤Ï²¿¤Ç¤¹¤Î¤Ç¡¢·ÇºÜ¤¤¤¿¤À¤¤¤¿¥¹¥¯¥ê¥×¥È¤Î´Ø¿ôrotationCube()¤Ë¾¯¤·¥Á¥å¡¼¥Ë¥ó¥°¤ò²Ã¤¨¤Æ¤ß¤Þ¤·¤¿¡£¼Â¬¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢Â¿¾¯¸úΨ¤¬¾å¤¬¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£
function rotationCube(e:Event):void {
	var nRotationY:Number = (nX - mouseX) * nDeceleration;
	var nRotationX:Number = (mouseY - nY) * nDeceleration;
	var myMatrix3D:Matrix3D = cube.transform.matrix3D;
	myMatrix3D.appendTranslation(-nX, -nY, 0);
	myMatrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
	myMatrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
	myMatrix3D.appendTranslation(nX, nY, 0);
	cube.transform.matrix3D = myMatrix3D;
	// ZºÂɸ¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë³ÆÌ̤òÇÛÃÖ
	for (var ind:uint = 0; ind < faces.length; ind++) {
		cube.addChild(faces[ind]);
	}
	var face_mc:MovieClip;
	// ³ÆÌ̤Υ°¥í¡¼¥Ð¥ë¤ÊzºÂɸ¤ò¼èÆÀ
	for (ind=0; ind < faces.length; ind++) {
		face_mc = faces[ind] as MovieClip;
		// faces[ind].pz = aces[ind].transform.getRelativeMatrix3D(root).position.z;
		face_mc.pz = face_mc.transform.getRelativeMatrix3D(root).position.z;
		// cube.removeChild(faces[ind]);
	}
	// zºÂɸ¤¬Î©ÊýÂΤè¤êÁ°Ì̤ˤ¢¤ëÌ̤À¤±¤òÉÁ²è
	faces.sortOn("pz", Array.NUMERIC | Array.DESCENDING);
	for (ind=0; ind < faces.length; ind++) {
		face_mc = faces[ind] as MovieClip;
		// if (faces[ind].pz < cube.z) {
		if (face_mc.pz < cube.z) {
			// cube.addChild(faces[ind]);
			face_mc.visible = true;
		} else {
			face_mc.visible = false;
		}
	}
}


----------------
¡¡

SeeDa!!
Åê¹ÆNo.41298
Åê¹ÆÆü»þ: 2009-1-23 15:45
¿¦¿Í
µï½»ÃÏ: Nagoya
Åê¹Æ: 221
»ÈÍѴĶ­:
WinXP
Flash CS4
au:W33SA­¶
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï
ÂÔ¤Á±ó¤·¤¤¸Â¤ê¤Ç¤¹¡£
// ¤µ¤é¤Ë½Å¤¯¤Ê¤ë¤ÈÏÓ¤âÃ䨤é¤ì¤½¤¦
°úÍÑ¡§
Fumio¤µ¤ó¤Ï½ñ¤­¤Þ¤·¤¿¡§
Matrix3D¥¯¥é¥¹¤Ï¡¢Flash Player 10¤Î¼ÂÁõ¤Ç¤¹¤Î¤Ç¡¢¼ýÏ¿¤Ë¤Ï´Ö¤Ë¹ç¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£¶ñÂÎŪ¤ËÆüÄø¤Ï·è¤Þ¤Ã¤Æ¤¤¤Þ¤»¤ó¤±¤É¡¢¤Ä¤®¤Ë²þÄû¤¹¤ë¤È¤­¤Ï²òÀâ¤Ë´Þ¤á¡¢¹ÔÎó¤Î¿ô³ØÅª¤ÊÀâÌÀ¤â¤«¤Ê¤êÊ䤦¤Ä¤â¤ê¤Ç¤¹¡£


¤¤¤¨¤¤¤¨¡¢¤â¤¦½½Ê¬¤ªÊ¢¤¤¤Ã¤Ñ¤¤¤Ç¤¹¡£
visible¤ò»È¤Ã¤¿Êý¤¬·Ú¤¯¤Ê¤ë¤Î¤Ï°Õ³°¤Êµ¤¤¬¤·¤Þ¤¹¡£
°úÍÑ¡§
¤½¤ì¤À¤±¤Ç¤Ï²¿¤Ç¤¹¤Î¤Ç¡¢·ÇºÜ¤¤¤¿¤À¤¤¤¿¥¹¥¯¥ê¥×¥È¤Î´Ø¿ôrotationCube()¤Ë¾¯¤·¥Á¥å¡¼¥Ë¥ó¥°¤ò²Ã¤¨¤Æ¤ß¤Þ¤·¤¿¡£¼Â¬¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢Â¿¾¯¸úΨ¤¬¾å¤¬¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£
		// ¥¶¥Ã¥¯¥êά
		if (face_mc.pz < cube.z) {
			// cube.addChild(faces[ind]);
			face_mc.visible = true;
		} else {
			face_mc.visible = false;
		}
ÌîÃæÊ¸Íº
Åê¹ÆNo.41390
Åê¹ÆÆü»þ: 2009-2-3 22:01
¤Á¤ç¤ó¤Þ¤²¤é
µï½»ÃÏ: Åìµþ
Åê¹Æ: 4166
»ÈÍѴĶ­:
CS4 .4.11 Vista Home Premium (SP1)
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï
MAX¤Î¤ª¤Þ¤±¥Í¥¿¤ËΩÊýÂΤβóž¤ò¤Ä¤¯¤Ã¤¿¤Î¤Ç¡¢¤´»²¹Í¤Þ¤Ç¤Ë¸ø³«¤·¤Þ¤¹¡£[¥é¥¤¥Ö¥é¥ê]¤Ë¤Ï100¥Ô¥¯¥»¥ë»ÍÊý¤Î6Ëç¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤òǼ¤á¡¢[¥¯¥é¥¹]¤È¤·¤ÆImage0¡ÁImage5¤òÀßÄꤷ¤Æ¤ª¤­¤Þ¤¹¡£
// ¥á¥¤¥ó¥¿¥¤¥à¥é¥¤¥ó: ¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó
var nX:Number = stage.stageWidth / 2;
var nY:Number = stage.stageHeight / 2;
var nSensitivity:Number = 0.2;
var nUnit:Number = 100 / 2;
var images_vector:Vector.<Array> = new Vector.<Array>();
var faces_vector:Vector.<Sprite> = new Vector.<Sprite>();
var cubeSprite:Sprite = new Sprite();
images_vector.push([Image0, new Vector3D(0, 0, -nUnit)]);
images_vector.push([Image1, new Vector3D(0, -nUnit, 0), ["rotationX", 90]]);
images_vector.push([Image2, new Vector3D(0, nUnit, 0), ["rotationX", -90]]);
images_vector.push([Image3, new Vector3D(nUnit, 0, 0), ["rotationY", 90]]);
images_vector.push([Image4, new Vector3D(-nUnit, 0, 0), ["rotationY", -90]]);
images_vector.push([Image5, new Vector3D(0, 0, nUnit), ["rotationX", 180]]);
initializeCube();
function initializeCube():void {
	var nLength:Number = images_vector.length;
	addChild(cubeSprite);
	cubeSprite.x = nX;
	cubeSprite.y = nY;
	cubeSprite.z = 0;
	for (var i:Number=0; i<nLength; ++i) {
		var my_array:Array = images_vector[i];
		var imageClass:Class = my_array[0] as Class;
		var myVector3D:Vector3D = my_array[1] as Vector3D;
		var rotation_array:Array = my_array[2] as Array;
		var mySprite:Sprite = new Sprite();
		var myBitmap:Bitmap = new Bitmap(new imageClass(0,0));
		faces_vector.push(mySprite);
		cubeSprite.addChild(mySprite);
		mySprite.addChild(myBitmap);
		myBitmap.x =  -  nUnit;
		myBitmap.y =  -  nUnit;
		mySprite.x = myVector3D.x;
		mySprite.y = myVector3D.y;
		mySprite.z = myVector3D.z;
		if (rotation_array) {
			mySprite[rotation_array[0]] = rotation_array[1];
		}
	}
	cubeSprite.addEventListener(Event.ENTER_FRAME, rotateCube);
}
function rotateCube(eventObject:Event):void {
	var nRotationX:Number =  -  (mouseY-nY) * nSensitivity;
	var nRotationY:Number = (mouseX-nX) * nSensitivity;
	rotateSprite(cubeSprite, nRotationX, nRotationY);
	arrangeFaces();
}
function rotateSprite(mySprite:Sprite, nRotationX:Number, nRotationY:Number):void {
	var myMatrix3D:Matrix3D = mySprite.transform.matrix3D;
	myMatrix3D.appendTranslation(-nX, -nY, 0);
	myMatrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
	myMatrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
	myMatrix3D.appendTranslation(nX, nY, 0);
}
function arrangeFaces():void {
	var faces_array:Array = new Array();
	var faceSprite:Sprite;
	var nLastIndex:int = cubeSprite.numChildren - 1;
	var nLength:Number;
	var i:uint;
	nLength = faces_vector.length;
	for (i=0; i < nLength; ++i) {
		faceSprite = faces_vector[i];
		var nZ:Number = faceSprite.transform.getRelativeMatrix3D(this).position.z;
		if (nZ > cubeSprite.z) {
			faceSprite.visible = false;
		} else {
			faceSprite.visible = true;
			faces_array.push({face:faceSprite, z:-nZ});
		}
	}
	faces_array.sortOn("z", Array.NUMERIC);
	nLength = faces_array.length;
	for (i=0; i < nLength; ++i) {
		faceSprite = faces_array[i].face;
		cubeSprite.setChildIndex(faceSprite, nLastIndex);
	}
}


----------------
¡¡

SeeDa!!
Åê¹ÆNo.41464
Åê¹ÆÆü»þ: 2009-2-12 0:34
¿¦¿Í
µï½»ÃÏ: Nagoya
Åê¹Æ: 221
»ÈÍѴĶ­:
WinXP
Flash CS4
au:W33SA­¶
ΩÊýÂΤÀ¤±¤Ç¤ÏÌÌÇò¤¯¤Ê¤¤¤«¤é¡Ä
¤ªÏФò²ó¤·¤Æ¤ß¤Þ¤·¤¿¡£
3D¤Î²óžÂΡʱßÁÝÂΡ©¡Ë¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤¹¤ë»î¤ß¤ÎÇÉÀ¸¤Ç¤¹¡£
¤Þ¤À¤Þ¤À¸úΨ¤Î°­¤¤¥¹¥¯¥ê¥×¥È¤Ç¤¹¤¬¡¢ÀÖ»úÉôʬ¤ò½¤Àµ¤¹¤ì¤Ð¿§¤ó¤Ê¤â¤Î¤ò²ó¤»¤Þ¤¹¡£¡ÊCS4¸ÂÄê..¡Ë
// ¥á¥¤¥ó¥¿¥¤¥à¥é¥¤¥ó: ¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó

var nX:Number=stage.stageWidth/2;
var nY:Number=stage.stageHeight/2;
var nSensitivity:Number=0.2;
var nUnit:Number=100/2;
var lightV:Vector3D=new Vector3D(-200,150,0);

transform.perspectiveProjection.fieldOfView=55;

// ÃÇÌ̿ޤÎÉÁ²èPOINT¤ò»ØÄê¡Ê£²ÅÀ°Ê¾å¡Ë
var points:Array = new Array(
new Point(0, -110+50),
new Point(35, -86.8+50),
new Point(35, -110+50),
new Point(50.1, -110+50),
new Point(50.1, -86.8+50),
new Point(70.7, -70.7+50),
new Point(87, -49.9+50),
new Point(96.9, -25.7+50),
new Point(100, 0+50),
new Point(84.3, 0+50),
new Point(81.7, -21.6+50),
new Point(73.3, -42+50),
new Point(59.6, -59.6+50),
new Point(42.3, -73.2+50),
new Point(21.7, -81.7+50),
new Point(0, -84.3+50)
);

// ²óžÂΤÎʬ³ä¿ô¡Ê3°Ê¾å¡Ë
var splitNum:uint=24;
var radian:Number=Math.PI*2/splitNum;

var owan:Sprite = new Sprite();
owan.x=stage.stageWidth/2;
owan.y=stage.stageHeight/2;
owan.z=0;

// splitNum¤Çʬ³ä¤·¤¿²óžÂΤòÉÁ²è¤¹¤ë
var faces:Array = new Array();
for (var s:uint = 0; s < splitNum; s++) {
	var rotationAngle:Number=360/splitNum*s;
	var rotationRadian:Number=radian*s;
	for (var i:uint = 0; i < points.length-1; i++) {
		var trapezoid:MovieClip=drawTrapezoid(points[i],points[i+1],i);
		setRotate(trapezoid, rotationRadian);
		faces.push(trapezoid);
		owan.addChild(trapezoid);
	}
}

addChild(owan);
owan.addEventListener(Event.ENTER_FRAME, rotateObject);

// ¿¼ÅÙÄ´Àá¤È¤¤¤¤²Ã¸º¤Ê±¢±ÆÉ½¸½
// ¸«¤¨¤Ê¤¤¥¹¥×¥é¥¤¥È¤âÉÁ²è¤·¤Á¤ã¤Ã¤Æ¤Þ¤¹
function arrangeFaces():void {
	for (var i:uint = 0; i < faces.length; i++) {
		var nX:Number=faces[i].transform.getRelativeMatrix3D(root).position.x;
		var nY:Number=faces[i].transform.getRelativeMatrix3D(root).position.y;
		var nZ:Number=faces[i].transform.getRelativeMatrix3D(root).position.z;
		faces[i].nx=nX;
		faces[i].ny=nY;
		faces[i].nz=nZ;
		owan.removeChild(faces[i]);
	}
	faces.sortOn("nz", Array.NUMERIC | Array.DESCENDING);
	for (i = 0; i < faces.length; i++) {
		owan.addChild(faces[i]);
		// ¸÷¸»¤È¤Î³ÑÅÙº¹¤òÄ´¤Ù¤ë
		var faseV:Vector3D=new Vector3D(faces[i].nx,faces[i].ny,faces[i].nz);
		var vAngle:Number=Vector3D.angleBetween(lightV,faseV);
		var offset:Number = (vAngle/Math.PI * 512 - 256) * 0.8;
		var color:ColorTransform=new ColorTransform(1,1,1,1,offset,offset,offset,0);
		faces[i].transform.colorTransform=color;
	}
}

// ²óžÂΡÊowan¡Ë¤ËÇÛÃÖ¤¹¤ë¥¹¥×¥é¥¤¥È¤Î²óž°ÌÃÖÄ´Àá
function setRotate(sprite:Sprite, myRadian:Number) {
	var distance:Number=Math.sqrt(Math.pow(sprite.x,2)+Math.pow(sprite.z,2));
	sprite.z=distance*Math.sin(myRadian);
	sprite.x=distance*Math.cos(myRadian);
	sprite.rotationY=- myRadian/Math.PI*180-90;
}

// Âæ·Á¤òÉÁ²è¤¹¤ë
function drawTrapezoid(pFrom:Point, pTo:Point, nCount:uint=0):MovieClip {
	var myColor:Number=nCount>7?0xff0000:0x000000;
	var _mc:MovieClip = new MovieClip();
	var apexes:Array=getTrapezoidApexes(pFrom,pTo);
	var nHeight:Number=Math.sqrt(Math.pow(apexes[0].y-apexes[1].y,2)+Math.pow(pFrom.y-pTo.y,2));
	_mc.graphics.beginFill(myColor, 1);
	_mc.graphics.moveTo(-apexes[0].x, -nHeight/2);
	_mc.graphics.lineTo( apexes[0].x, -nHeight/2);
	_mc.graphics.lineTo( apexes[1].x,  nHeight/2);
	_mc.graphics.lineTo(-apexes[1].x,  nHeight/2);
	_mc.graphics.lineTo(-apexes[0].x, -nHeight/2);
	_mc.graphics.endFill();
	_mc.rotationX=getSlantAngle(new Point(apexes[1].y,pTo.y),new Point(apexes[0].y,pFrom.y))-90;
	_mc.y = (pTo.y+pFrom.y)/2;
	_mc.z = -(apexes[1].y+apexes[0].y)/2;
	return _mc;
}

// ¾åÌ̤«¤é¸«¤¿Âæ·Á¤ÎĺÅÀºÂɸ¤òµá¤á¤ë
function getTrapezoidApexes(upper:Point, bottom:Point):Array {
	var apexes:Array = new Array();
	var upperX:Number=upper.x*Math.sin(radian/2);
	var upperY:Number=upper.x*Math.cos(radian/2);
	apexes.push(new Point(upperX,upperY));
	var bottomX:Number=bottom.x*Math.sin(radian/2);
	var bottomY:Number=bottom.x*Math.cos(radian/2);
	apexes.push(new Point(bottomX,bottomY));
	return apexes;
}

// ·¹¼Ð³Ñ¤òµá¤á¤ë
function getSlantAngle(pFrom:Point, pTo:Point):Number {
	var dx:Number=pFrom.x-pTo.x;
	var dy:Number=pFrom.y-pTo.y;
	return Math.atan2(dy, dx) * 180 / Math.PI;
}

// ¥Þ¥¦¥¹¤ËÈ¿±þ¤·¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò²óž¤µ¤»¤ë
function rotateObject(eventObject:Event):void {
	var nRotationX:Number = (mouseY-nY) * nSensitivity;
	var nRotationY:Number = (mouseX-nX) * nSensitivity;
	owan.transform.matrix3D.appendTranslation(- nX,- nY,0);
	owan.transform.matrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
	owan.transform.matrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
	owan.transform.matrix3D.appendTranslation(nX,nY,0);
	arrangeFaces();
}

¥¹¥¯¥ê¥×¥È¤Î½¤ÀµÂç´¿·Þ¤·¤Þ¤¹
SeeDa!!
Åê¹ÆNo.41469
Åê¹ÆÆü»þ: 2009-2-12 21:01
¿¦¿Í
µï½»ÃÏ: Nagoya
Åê¹Æ: 221
»ÈÍѴĶ­:
WinXP
Flash CS4
au:W33SA­¶
Re: ΩÊýÂΤÀ¤±¤Ç¤ÏÌÌÇò¤¯¤Ê¤¤¤«¤é¡Ä
¤â²ó¤·¤Æ¤ß¤Þ¤·¤¿
²¡¤·½Ð¤·¡ÊÁݰúÂΡˤϲóžÂΤËÈæ¤Ù¤Æ´Êñ¤À¤È»×¤Ã¤Æ¤¤¤¿¤ó¤Ç¤¹¤¬¡¢Î¢Ê֤俤â¤Î¤ò¤­¤Á¤ó¤È¾Ã¤µ¤Ê¤¤¤ÈÀµ¤·¤¯É½¼¨¤µ¤ì¤Þ¤»¤ó¡£
¤Ç¡¢·ë¶É½ÐÍè¤Ê¤«¤Ã¤¿¤«¤é¡¢¡¢¡¢£Æ¤òÉÁ¤¤¤Æ¤¤¤ëÀµÌ̤È΢Ì̤οôÃͤòµ¶Áõ¡Êx100¡Ë¤·¤Æ¸íËâ²½¤·¤Æ¤Þ¤¹
¡Ê²¼µ­¥¹¥¯¥ê¥×¥È¤Ï"F"¤Ç¤¹¡Ë

ÌîÃæ¤µ¤ó¤Î¤´Ä󼨤¤¤¿¤À¤¤¤¿¥¹¥¯¥ê¥×¥È¤Î¤¦¤Á
°úÍÑ¡§
Fumio¤µ¤ó¤Ï½ñ¤­¤Þ¤·¤¿¡§
var images_vector:Vector.<Array> = new Vector.<Array>();
var faces_vector:Vector.<Sprite> = new Vector.<Sprite>();
¤ä
		var imageClass:Class = my_array[0] as Class;
		var myVector3D:Vector3D = my_array[1] as Vector3D;
		var rotation_array:Array = my_array[2] as Array;

¤¢¤¿¤ê¤ÎÃ챤¬¤Ê¤¯¤Æ¥Á¥ó¥×¥ó¥«¥ó¥×¥ó¤Ç¤¹¤¬¡¢¾è¤ê±Û¤¨¤Ê¤¤¤È¤¤¤±¤Ê¤¤Êɤʤó¤À¤í¤¦¤Ê¤¡¡Ä

// ¥á¥¤¥ó¥¿¥¤¥à¥é¥¤¥ó: ¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó
var point_array:Array = new Array(
new Point(-47,-70.8),
new Point(-15.8,-70.8),
new Point(47,-70.8),
new Point(47,-45),
new Point(-15.8,-45),
new Point(-15.8,-14.6),
new Point(25.9,-14.6),
new Point(25.9,11.7),
new Point(-15.8,11.7),
new Point(-15.8,70.7),
new Point(-47,70.7),
new Point(-47,11.7),
new Point(-47,-14.6),
new Point(-47,-45)
);
var nDepth:Number=90;

var pNum:uint=point_array.length;
var nX:Number = stage.stageWidth/2;
var nY:Number = stage.stageHeight/2;
var i:uint;
var faces:Array = new Array();
var nSensitivity:Number=0.1;
var lightV:Vector3D=new Vector3D(-200,150,0);

// ½ñ¤­½Ð¤¹¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¹¥Æ¡¼¥¸¤Î¥»¥ó¥¿¡¼¤ËÇÛÃÖ
var myObject:Sprite = new Sprite();
myObject.x = nX;
myObject.y = nY;
myObject.z = 0;

// ÀµÌ̤«¤é¸«¤¿¿Þ¡Ê¾åÌÌ¡¿²¼Ì̡ˤòÉÁ²è
var faceName:String = 'topFace';
var topFace:MovieClip = drawFace(faceName);
topFace.z = -nDepth/2;
faces.push(topFace);
myObject.addChild(topFace);

faceName = 'bottomFace';
var bottomFace:MovieClip = drawFace(faceName);
bottomFace.z = nDepth/2;
faces.push(bottomFace);
myObject.addChild(bottomFace);

// ¦Ì̡ʱü¹Ô¤­¡Ë¤òÉÁ²è
for (i = 0; i < pNum; i++) {
	var pFrom:Point = point_array[i];
	var pTo:Point = i == pNum-1 ? point_array[0] : point_array[i+1];
	var mySprite:MovieClip = drawDepth(pFrom,pTo);
	faces.push(mySprite);
	myObject.addChild(mySprite);
}

// ¿¼ÅÙÄ´Àá
var faceNum:uint = faces.length;
addChild(myObject);
arrangeFaces();
myObject.addEventListener(Event.ENTER_FRAME, rotateObject);

// ¤¤¤¤²Ã¸º¤Ê¿¼ÅÙÄ´Àá¤È¤¤¤¤²Ã¸º¤Ê±¢±ÆÉ½¸½
function arrangeFaces():void {
	var tempPoint:MovieClip;
	for (i = 0; i < faceNum; i++) {
		var nX:Number=faces[i].transform.getRelativeMatrix3D(root).position.x;
		var nY:Number=faces[i].transform.getRelativeMatrix3D(root).position.y;
		var nZ:Number=faces[i].transform.getRelativeMatrix3D(root).position.z;
		var faceName:String = faces[i].name;
		if (faceName == 'topFace' || faceName == 'bottomFace') nZ *= 100;
		faces[i].nx=nX;
		faces[i].ny=nY;
		faces[i].nz=nZ;
		myObject.removeChild(faces[i]);
	}
	var frontFlg:Boolean = true;
	faces.sortOn("nz", Array.NUMERIC | Array.DESCENDING);
	for (i = 0; i < faces.length; i++) {
		myObject.addChild(faces[i]);
		faces[i].visible = true;
		// ¸÷¸»¤È¤Î³ÑÅÙº¹¤òÄ´¤Ù¤ë
		var faseV:Vector3D=new Vector3D(faces[i].nx,faces[i].ny,faces[i].nz);
		var vAngle:Number=Vector3D.angleBetween(lightV,faseV);
		var offset:Number = (vAngle/Math.PI * 512 - 300);
		var color:ColorTransform=new ColorTransform(1,1,1,1,offset,offset,offset,0);
		faces[i].transform.colorTransform=color;
	}
	
}

// ÀµÌ̤«¤é¸«¤¿¿Þ¡Ê¾åÌÌ¡¿²¼Ì̡ˤòÉÁ²è
function drawFace(faceName:String):MovieClip {
	var mySprite:MovieClip = new MovieClip();
	mySprite.graphics.beginFill(0xff0000);
	mySprite.graphics.moveTo(point_array[0].x, point_array[0].y);
	for (i=1; i < pNum; i++) {
		mySprite.graphics.lineTo(point_array[i].x, point_array[i].y);
	}
	mySprite.graphics.lineTo(point_array[0].x, point_array[0].y);
	mySprite.graphics.endFill();
	mySprite.name = faceName;
	return mySprite;
}
// ±ü¹Ô¤­¤òÉÁ²è
function drawDepth(pFrom:Point, pTo:Point):MovieClip {
	var mySprite:MovieClip = new MovieClip();
	var nCenter:Point = new Point((pFrom.x+pTo.x)/2, (pFrom.y+pTo.y)/2);
	var nDistance:Number = Point.distance(pFrom, pTo);
	var nRadian:Number = Math.atan2(pTo.y-pFrom.y,pTo.x-pFrom.x);
	var nDegree:Number = nRadian/Math.PI*180;
	mySprite.graphics.beginFill(0x999999);
	mySprite.graphics.moveTo(-nDistance/2, -nDepth/2);
	mySprite.graphics.lineTo(nDistance/2,  -nDepth/2);
	mySprite.graphics.lineTo(nDistance/2, nDepth/2);
	mySprite.graphics.lineTo(-nDistance/2, nDepth/2);
	mySprite.graphics.lineTo(-nDistance/2,  -nDepth/2);
	mySprite.graphics.endFill();
	mySprite.rotationX = 90;
	mySprite.rotationZ = nDegree;
	mySprite.x = nCenter.x;
	mySprite.y = nCenter.y;
	return mySprite;
}

// ¥Þ¥¦¥¹¤ËÈ¿±þ¤·¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò²óž¤µ¤»¤ë
function rotateObject(eventObject:Event):void {
	var nRotationX:Number = (mouseY-nY) * nSensitivity;
	var nRotationY:Number = -(mouseX-nX) * nSensitivity;
	myObject.transform.matrix3D.appendTranslation(- nX,- nY,0);
	myObject.transform.matrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
	myObject.transform.matrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
	myObject.transform.matrix3D.appendTranslation(nX,nY,0);
	arrangeFaces();
}
SeeDa!!
Åê¹ÆNo.41477
Åê¹ÆÆü»þ: 2009-2-16 6:00
¿¦¿Í
µï½»ÃÏ: Nagoya
Åê¹Æ: 221
»ÈÍѴĶ­:
WinXP
Flash CS4
au:W33SA­¶
Re: ΩÊýÂΤÀ¤±¤Ç¤ÏÌÌÇò¤¯¤Ê¤¤¤«¤é¡Ä
µåÂΤò²ó¤·¤Æ¤ß¤¿
¤³¤ì¤Þ¤Ç°¡Î®¤Ç¥×¥ê¥ß¥Æ¥£¥Ö¤â¤É¤­¤òºîÀ®¤·¤Æ¤­¤Þ¤·¤¿¤¬¡¢UV¥Þ¥Ã¥Ô¥ó¥°¤ò»È¤¤¤¿¤«¤Ã¤¿¤Î¤ÇËÜή¤ËÄ©À路¤Æ¤ß¤Þ¤·¤¿¡£

µåÂΤξå¤Ç¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥Ý¥ê¥´¥ó¥é¥¤¥ó¤Îɽ¼¨¡¿Èóɽ¼¨¤òÀÚ¤êÂØ¤¨¤é¤ì¤Þ¤¹¡£

¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó
µåÂΤòÇÛÃÖ¤·¤Æ²óž¤µ¤»¤ë
var nX:Number = stage.stageWidth / 2;
var nY:Number = stage.stageHeight / 2;
var nSensitivity:Number = 0.1;

var myBall:DrawBall = new DrawBall(150, 30);
myBall.x = stage.stageWidth/2;
myBall.y = stage.stageHeight/2;
addChild(myBall);

addEventListener(Event.ENTER_FRAME, rotate);
function rotate(eventObject:Event):void{
	var nRotationX:Number = (mouseY-nX) * nSensitivity;
	var nRotationY:Number = -(mouseX-nY) * nSensitivity;
	myBall.myMatrix.appendRotation(nRotationX, Vector3D.X_AXIS);
	myBall.myMatrix.appendRotation(nRotationY, Vector3D.Y_AXIS);
	myBall.rendar();
}
addEventListener(MouseEvent.CLICK, frameView);
function frameView(eventObject:MouseEvent):void{
	myBall.wireFlg*=-1;
}


¥¯¥é¥¹
µåÂΤòÉÁ¤¯
package {
	import flash.display.*;
	import flash.geom.*;
	public class DrawBall extends Sprite {
		
		private var radius:Number;
		private var split:uint;
		private var vApexes    :Vector.<Number> = new Vector.<Number>();
		private var vFlatApexes:Vector.<Number> = new Vector.<Number>();
		private var vIndices   :Vector.<int>    = new Vector.<int>();
		private var vUVT       :Vector.<Number> = new Vector.<Number>();
		private var myBitmap   :mappingdata = new mappingdata(0,0);
		private var mySpace    :Sprite = new Sprite();
		public  var myMatrix   :Matrix3D;
		public  var wireFlg    :int = 1;
		public function DrawBall(radius:Number=100, split:uint=10):void {
			myMatrix = new Matrix3D();
			myMatrix.appendRotation(60,Vector3D.X_AXIS);
			myMatrix.appendRotation(20,Vector3D.Y_AXIS);
			addChild(mySpace);
			setApexes(radius, split);
			setIndices(split);
			rendar();
		}
		private function setApexes(nRadius:Number, nSplit:uint):void {
			for (var v:uint = 0; v <= nSplit; v++) {
				if (v % 2 == 0) {
					var radianV:Number = Math.PI * v / nSplit;
					var nDist  :Number = nRadius * Math.sin(radianV);
					var nY     :Number = nRadius * Math.cos(radianV);
					for (var h:uint = 0; h <= nSplit; h++) {
						var radianH:Number = Math.PI * 2 * h / nSplit;
						var nX:Number = nDist * Math.cos(radianH);
						var nZ:Number = nDist * Math.sin(radianH);
						vApexes.push(nX, nY, nZ);
						vUVT.push(h/nSplit,v/nSplit,0);
					}
				}
			}
		}
		private function setIndices(nSplit:uint) {
			for (var v:uint = 0; v < nSplit; v++) {
				for (var h:uint = 0; h < nSplit; h++) {
					var nP = (nSplit+1) * v + h;
					var i0:uint = nP;
					var i1:uint = nP+1;
					var i2:uint = nP+nSplit+1;
					var i3:uint = nP+nSplit+2;
					vIndices.push(i0,i1,i2, i3,i2,i1);
				}
			}
		}
		public function rendar() {
			Utils3D.projectVectors(myMatrix, vApexes, vFlatApexes, vUVT);
			mySpace.graphics.clear();
			mySpace.graphics.beginBitmapFill(myBitmap);
			if (wireFlg == 1) {
				mySpace.graphics.lineStyle(1,0x000000);
			}
			mySpace.graphics.drawTriangles(vFlatApexes, vIndices, vUVT, TriangleCulling.POSITIVE);
			mySpace.graphics.endFill();
		}
	}
}


¥¹¥ì¥Ã¥Éɽ¼¨ | ¿·¤·¤¤¤â¤Î¤«¤é Á°¤Î¥È¥Ô¥Ã¥¯ | ¼¡¤Î¥È¥Ô¥Ã¥¯ | ¥È¥Ã¥×

Åê¹Æ¤¹¤ë¤Ë¤Ï¤Þ¤ºÅÐÏ¿¤ò
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops